/* Es wird ein Tab erzeugt  das
 * dann auf einem JPanel eingebunden wird.
 *  
 * 
 * Datei: Passwort.java   Autor: Johannes Reinhard
 * Datum: 22.11.2011                   Version: 0.2 
 *
 */
package GUI;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import personenverwaltung.*;


public class Passwort
{
  private JPanel jpanelProfilGUI;      /* Haupt JPanel */
  
  private Dashboard sichereDashboard;
  private Personenverwaltung persverw;
  private WechselSprache sprache;
  private JButton aenderPasswort;
  
  private JPasswordField altesPasswort;
  private JPasswordField neuesPasswort1;
  private JPasswordField neuesPasswort2;
  /**
   * Konstruktor der Klasse StandortGUI
   * @param bord
   */
  protected Passwort (Dashboard bord)
  {	
    sichereDashboard = bord;
    persverw = sichereDashboard.persVer;
    sprache = Dashboard.sprache;
    erzeugePasswort ();
    /* Sorgt dafuer, dass alle Felder geleert werden wenn man 
     * mit der Maus hineinklickt.
     */
    mausInAktionBringen ();
	
  }
  /**
   * Erzeuge eine Test JPanel das dann eingebunden wird
   */
  private void erzeugePasswort ()
  { 
    jpanelProfilGUI = new JPanel ();
	  
    /* Informationsfelder */
    JLabel infoAltesPassword = new JLabel (sprache.lokal.
	gibUebersetzung("altesPasswort"));
    JLabel infoNeuesPassword = new JLabel (sprache.lokal.
	gibUebersetzung("neuesPasswort"));
    JLabel infoWiederholung = new JLabel (sprache.lokal.
	gibUebersetzung("wiederholung"));
    JTextField platzhalter = new JTextField ();
	  
    /* Ein Platzhalter damit das GridLayout nicht verrutsch*/ 
    platzhalter.setBackground (Color.GRAY);
    platzhalter.setBorder (null);
    platzhalter.setEditable (false);
	  
    JTextField info = new JTextField (sprache.lokal.
	gibUebersetzung("NeuesPasswort"));	
    info.setEditable (false);
    info.setBackground (Color.GRAY);
    info.setBorder (null);
	  
    altesPasswort = new JPasswordField (sprache.lokal.
	gibUebersetzung("altesPasswort"));
    neuesPasswort1 = new JPasswordField (sprache.lokal.
        gibUebersetzung("neuesPasswort"));
    neuesPasswort2 = new JPasswordField (sprache.lokal.
        gibUebersetzung("wiederholung"));
    aenderPasswort = new JButton (sprache.lokal.
	gibUebersetzung("Passwort Aendern"));
    
    jpanelProfilGUI.setLayout (new GridLayout (0, 2));
    jpanelProfilGUI.add (info);
    jpanelProfilGUI.add (platzhalter);
    jpanelProfilGUI.add (infoAltesPassword);
    jpanelProfilGUI.add (altesPasswort);
    jpanelProfilGUI.add (infoNeuesPassword);
    jpanelProfilGUI.add (neuesPasswort1);
    jpanelProfilGUI.add (infoWiederholung);
    jpanelProfilGUI.add (neuesPasswort2);
    jpanelProfilGUI.add (aenderPasswort);
	
    buttonInAktionBringen ();
  }
  
  /**
   * Gibt das hauptJPanel zurueck
   * @return JPanel
   */
  protected JPanel getJPanelProfilGUI ()
  {
    return jpanelProfilGUI;
  }
  
  /**
   * Buttons werden mit ActionListener versehen und es wird festgelegt
   * was passiert wenn sie bestaetigt werden.
   */
  private void buttonInAktionBringen ()
  {	
    aenderPasswort.addActionListener ( 
	new ActionListener ()
	{
	  public void actionPerformed (ActionEvent e) 
	  {
	    try
	    {
	      /* neues Passwort setzen und fals es Falsch ist 
	         wird eine Exception geworfen. */
	      
	      persverw.passwortAendern (Dashboard.nutzerID, 
		  new String (altesPasswort.getPassword ()), 
		  new String (neuesPasswort1.getPassword ()),
		  new String (neuesPasswort2.getPassword ()));
	      
	      neuesPasswort1.setBackground (Color.GREEN);
	      neuesPasswort2.setBackground (Color.GREEN);
	      Dialog ();
	    }
	    catch (Exception ex)
	    {
	      /* Visualisierung, wenn das Passwort falsch ist*/
	      neuesPasswort1.setBackground (Color.RED);
	      neuesPasswort2.setBackground (Color.RED);
	    }
	  }
	}			
      );
  }
  
  public void Dialog ()
  {
    JOptionPane.showConfirmDialog(null,
	"Ihr Passwort wurde geaendert" , "Passwort geaendert !", 
        JOptionPane.CLOSED_OPTION);
  }
  
  /**
   * Hier wird ein Listener an ein Textfeld gehaengt. 
   * Wenn man jetzt in das Feld klick 
   * wird der bestehende Inhalt durch einen anderen ersetzt.
   */
  private void mausInAktionBringen ()
  {
    altesPasswort.addMouseListener (
      new MouseListener ()
      {
        public void mouseClicked (MouseEvent e) 
        {
          altesPasswort.setText ("");
          altesPasswort.setBackground (Color.WHITE);
        }
        
        public void mouseEntered (MouseEvent e) 
        {
        }
        
        public void mouseExited (MouseEvent e) 
        {
        }
        
        public void mousePressed (MouseEvent e) 
        {
        }
        
        public void mouseReleased (MouseEvent e) 
        {
        }
        
      }
    );
    neuesPasswort1.addMouseListener (
      new MouseListener ()
      {
        public void mouseClicked (MouseEvent e) 
        {
          neuesPasswort1.setText ("");
          neuesPasswort1.setBackground (Color.WHITE);
        }
        
        public void mouseEntered (MouseEvent e) 
        {
        }
        
        public void mouseExited (MouseEvent e) 
        {
        }
        
        public void mousePressed (MouseEvent e) 
        {
        }
        
        public void mouseReleased (MouseEvent e) 
        {
        }
        
      }
    );
    neuesPasswort2.addMouseListener (
      new MouseListener ()
      {
        public void mouseClicked (MouseEvent e) 
        {
          neuesPasswort2.setBackground (Color.WHITE);
          neuesPasswort2.setText ("");
        }
        
        public void mouseEntered (MouseEvent e) 
        {
        }
        
        public void mouseExited (MouseEvent e) 
        {
        }
        
        public void mousePressed (MouseEvent e) 
        {
        }
        
        public void mouseReleased (MouseEvent e) 
        {
        }
        
      }
    );
  }
  
  public WechselSprache gibSprache ()	
  {	
    return sprache;
  }
  
  public void setzeSprache (WechselSprache sprache)		
  {
    this.sprache = sprache;	
  }
}
